<?php

class Administracion_UsuariosController extends Zend_Controller_Action {

    public function init() {
//$this->redirect('Autentifica/login');
        $this->view->baseUrl = $this->_request->getBaseUrl();
    }

    public function indexAction() {
// action body
    }

    public function preDispatch() {
        $options = array(
            'layout' => 'administracionlayout',
        );
        Zend_Layout::startMvc($options);
    }

    public function crearusuarioAction() {
// action body
        $facultades = new Application_Model_DbTable_Facultades();
        $row = $facultades->getall()->toArray();
        $this->view->facultades = $row;

//Verificar que venga de una peticion AJAX
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $usuarios = new Application_Model_DbTable_Usuarios();
            $beneficiarios = new Application_Model_DbTable_Beneficiarios();

            if ($this->_request->getPost("aux") == "crear") {

//Recibir los valores
                $codigo = $this->_request->getPost("codigo");
                if ($usuarios->verificar($codigo) == 1) {
                    $request = "El usuario ya existe";
                } else {
                    $rol = $this->_request->getPost("rol");
                    $facultad = $this->_request->getPost("facultad");
                    $nombre = $this->_request->getPost("nombre");
                    $apellido = $this->_request->getPost("apellido");
                    $email = $this->_request->getPost("email");
                    $direccion = $this->_request->getPost("direccion");
                    $telefono = $this->_request->getPost("telefono");
                    $celular = $this->_request->getPost("celular");
                    $dia = date("D:i", strtotime("-1 day"));
                    $fecha = date("Y/m/d");
                    $pass = $this->generarClave(5); //'{Z42d';
                    $clave = $pass . '%2+7FVJ.tQuWa8ssM2@J"pb*>nDnZ0x:p\C';

                    $usuarios->agregar($codigo, $rol, $facultad, $nombre, $apellido, $email, $direccion
                            , $telefono, $celular, md5($clave), $fecha);

//$enviado = $this->enviarCredenciales($codigo, $nombre . ' ' . $apellido, $email, $pass);
//if ($enviado) {
                    $request = 1;
                    /* } else {
                      $verificar = 'Ha ocurrido un error al intentar enviar el e-mail.';
                      } */
                }
            } else if ($this->_request->getPost("aux") == "consultarBeneficiario") {

                $codigoUd = $this->_request->getPost("codigo");
                if ($beneficiarios->existe($codigoUd)) {
                    $query = $beneficiarios->consultarBeneficiario($codigoUd);
                    $request = Zend_Json::encode($query);
                } else {
                    $request = 0;
                }
            } else if ($this->_request->getPost("aux") == "verificarUsuario") {
                $nombreUsuario = $this->_request->getPost("nombreUsuario");
                if ($usuarios->existeNick($nombreUsuario)) {
                    $request = 1;
                } else {
                    $request = 0;
                }
            }
            echo $request;
        }
    }

    public function consultarusuarioAction() {
// action body
//Verificar que venga de una peticion AJAX
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $usuarios = new Application_Model_DbTable_Usuarios();
//Recibir los valores
            $codigo = $this->_request->getPost("codigo");
            if ($usuarios->verificar($codigo) == 1) {
                $roles = new Application_Model_DbTable_Roles();
                $facultades = new Application_Model_DbTable_Facultades();
                $query = $usuarios->consultar($codigo);
                $rol = $roles->consultar($query->idRol);
                $facultad = $facultades->consultar($query->codigoFacultad);
                $query->idRol = $rol->descripcion;
                $query->codigoFacultad = $facultad->nombreFacultad;

                $json = Zend_Json::encode($query);
            } else {
                $json = 1;
            }
            echo $json;
        }
    }

    public function consultarusuariosAction() {
        $usuarios = new Application_Model_DbTable_Usuarios();
        $this->view->consulta = $usuarios->consulta_general();
        $namespace = new Zend_Session_Namespace("User_superAdministrador");
        $this->view->codigoSesion = $namespace->codigoUd;

        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();

            $namespace->codigoBusqueda = $this->_request->getPost("codigo");
        }
    }

    public function actualizarusuarioAction() {
//___________________________________________________________________
        $facultades = new Application_Model_DbTable_Facultades();
        $row = $facultades->getall()->toArray();
        $this->view->facultades = $row;


        $namespace = new Zend_Session_Namespace("User_Administrador");

        if ($namespace->codigoBusqueda != "") {
            $usuarios = new Application_Model_DbTable_Usuarios();
            $roles = new Application_Model_DbTable_Roles();
            $facultades = new Application_Model_DbTable_Facultades();

            $query = $usuarios->consultar($namespace->codigoBusqueda);
//$query = $usuarios->consultar($codigo);
            $rol = $roles->consultar($query->idRol);
            $facultad = $facultades->consultar($query->codigoFacultad);
            $this->view->prueba = $query->codigoFacultad;
            $query->idRol = $rol->descripcion;
            $query->codigoFacultad = $facultad->nombreFacultad;
            $this->view->usuario = $query;
            $row = $facultades->getall()->toArray();
            $this->view->facultades = $row;

//unset($namespace->codigoBusqueda); 
        }

//POR METODO GET
        if ($this->getRequest()->getParam('id') != "") {

            $codigo = $this->getRequest()->getParam('id');

            $usuarios = new Application_Model_DbTable_Usuarios();
            $roles = new Application_Model_DbTable_Roles();
            $facultades = new Application_Model_DbTable_Facultades();
            $namespace = new Zend_Session_Namespace("User_Administrador");
//$query = $usuarios->consultar($namespace->codigo);            
            $query = $usuarios->consultar($codigo);
            $rol = $roles->consultar($query->idRol);
            $facultad = $facultades->consultar($query->codigoFacultad);
            $this->view->prueba = $query->codigoFacultad;
            $query->idRol = $rol->descripcion;
            $query->codigoFacultad = $facultad->nombreFacultad;
            $this->view->usuario = $query;
            $row = $facultades->getall()->toArray();
            $this->view->facultades = $row;
        }

//PETICION AJAX
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $usuarios = new Application_Model_DbTable_Usuarios();
//Recibir los valores
            $aux = $this->_request->getPost("aux");

            $namespace->codigoBusqueda = $this->_request->getPost("codigo");

            if ($aux == "consultar") {
                $codigo = $this->_request->getPost("codigo");
                if ($usuarios->verificar($codigo) == 1) {
                    $query = $usuarios->consultar($codigo);
                    $json = Zend_Json::encode($query);
                } else {
                    $json = 1;
                }
                echo $json;
            } elseif ($aux == "actualizar") {
//Recibir los valores
                $codigo = $this->_request->getPost("codigo");
                $namespace = new Zend_Session_Namespace("User_Administrador");
                $codigouser = $namespace->codigo;
                if ($codigouser != $codigo) {
                    if ($usuarios->verificar($codigo) == 1) {
                        $rol = $this->_request->getPost("rol");
                        $facultad = $this->_request->getPost("facultad");
                        $nombre = $this->_request->getPost("nombre");
                        $apellido = $this->_request->getPost("apellido");
                        $email = $this->_request->getPost("email");
                        $direccion = $this->_request->getPost("direccion");
                        $telefono = $this->_request->getPost("telefono");
                        $celular = $this->_request->getPost("celular");
                        $integridad = $usuarios->consultar($codigo);
                        if (empty($nombre)) {
                            $nombre = $integridad->nombres;
                        }
                        if (empty($apellido)) {
                            $apellido = $integridad->apellidos;
                        }
                        if (empty($email)) {
                            $email = $integridad->email;
                        }
                        if (empty($direccion)) {
                            $direccion = $integridad->direccion;
                        }
                        if (empty($telefono)) {
                            $telefono = $integridad->telefono;
                        }
                        if (empty($celular)) {
                            $celular = $integridad->celular;
                        }


                        $usuarios->actualizar($codigo, $rol, $facultad, $nombre, $apellido, $email, $direccion
                                , $telefono, $celular);
                        $aux = 1;
                    } else {
                        $aux = "El usuario que desea actualizar no existe";
                    }
                } else {
                    $aux = "No puede actualizar sus propios datos";
                }

                echo $aux;
            } elseif ($aux == "editar") {
                $codigo = $this->_request->getPost("codigo");
                $usuarios = new Application_Model_DbTable_Usuarios();
                $roles = new Application_Model_DbTable_Roles();
                $facultades = new Application_Model_DbTable_Facultades();
                $namespace = new Zend_Session_Namespace("User_Administrador");
                $query = $usuarios->consultar($codigo);
                $rol = $roles->consultar($query->idRol);
                $facultad = $facultades->consultar($query->codigoFacultad);
                $this->view->prueba = $query->codigoFacultad;
                $query->idRol = $rol->descripcion;
                $query->codigoFacultad = $facultad->nombreFacultad;
                $this->view->usuario = $query;
                $row = $facultades->getall()->toArray();
                $this->view->facultades = $row;
            }
        }
    }

    public function estadousuarioAction() {
// action body
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $usuarios = new Application_Model_DbTable_Usuarios();
//Recibir los valores
            $aux = $this->_request->getPost("aux");
            if ($aux == "consultar") {
                $codigo = $this->_request->getPost("codigo");
                if ($usuarios->verificar($codigo) == 1) {
                    $roles = new Application_Model_DbTable_Roles();
                    $facultades = new Application_Model_DbTable_Facultades();
                    $query = $usuarios->consultar($codigo);
                    $rol = $roles->consultar($query->idRol);
                    $facultad = $facultades->consultar($query->codigoFacultad);
                    $query->idRol = $rol->descripcion;
                    $query->codigoFacultad = $facultad->nombreFacultad;

                    $json = Zend_Json::encode($query);
                } else {
                    $json = 1;
                }
                echo $json;
            } else if ($aux == "actualizar") {
//Recibir los valores
                $nombreUsuario = $this->_request->getPost("nombreUsuario");
                if ($usuarios->existeNick($nombreUsuario)) {
                    $estado = $this->_request->getPost("estado");
                    $usuarios->actualizarestado($nombreUsuario, $estado);
                    $aux = 1;
                } else {
                    $aux = "El usuario que desea cambiar de estado no existe";
                }

                echo $aux;
            }
        }
    }

    public function crearfacultadesAction() {

        $sedes = new Application_Model_DbTable_Sedes();
        $row = $sedes->getall()->toArray();
        $this->view->sedes = $row;
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $facultades = new Application_Model_DbTable_Facultades();


            if ($this->_request->getPost("aux") == "crear") {
//Recibir los valores
                $identificacion = $this->_request->getPost("identificacion");
                if ($facultades->verificar($identificacion) == 1) {
                    $verificar = "La facultad ya existe";
                } else {
                    $facultad = $this->_request->getPost("nombre");
                    $direccion = $this->_request->getPost("direccion");
                    $telefono = $this->_request->getPost("telefono");
                    $sede = $this->_request->getPost("sede");

                    $facultades->agregar($identificacion, $facultad, $direccion, $telefono, $sede);
                    $verificar = 1;
                }
            } else {
                $codigo = $this->_request->getPost("codigo");
                $verificar = $facultades->verificar($codigo);
            }
            echo $verificar;
        }
    }

    public function consultarfacultadAction() {
// action body
        $facultades = new Application_Model_DbTable_Facultades();
        $row = $facultades->getall()->toArray();
        $this->view->facultades = $row;
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $facultades = new Application_Model_DbTable_Facultades();
//Recibir los valores
            $facultad = $this->_request->getPost("facultad");
            if ($facultades->verificar($facultad) == 1) {
                $query = $facultades->consultar($facultad);
                $json = Zend_Json::encode($query);
            } else {
                $json = 1;
            }
            echo $json;
        }
    }

    public function consultarfacultadesAction() {
        $facultades = new Application_Model_DbTable_Facultades();
        $this->view->consulta = $facultades->consulta_general();
    }

    public function actualizarfacultadAction() {
// action body
        $facultades = new Application_Model_DbTable_Facultades();
        $row = $facultades->getall()->toArray();
        $this->view->facultades = $row;

        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $facultades = new Application_Model_DbTable_Facultades();
//Recibir los valores
            $aux = $this->_request->getPost("aux");
            if ($aux == "consultar") {
                $facultad = $this->_request->getPost("facultad");
                if ($facultades->verificar($facultad) == 1) {
                    $query = $facultades->consultar($facultad);
                    $json = Zend_Json::encode($query);
                } else {
                    $json = 1;
                }
                echo $json;
            } else {
//Recibir los valores
                $codigo = $this->_request->getPost("codigo");
//var_dump($codigo);
                if ($facultades->verificar($codigo) == 1) {
                    $nombre = $this->_request->getPost("nombre");
                    $direccion = $this->_request->getPost("direccion");
                    $telefono = $this->_request->getPost("telefono");
                    $integridad = $facultades->consultar($codigo);
//var_dump($integridad);
                    if (empty($nombre)) {
                        $nombre = $integridad->nombreFacultad;
                    }
                    if (empty($direccion)) {
                        $direccion = $integridad->direccionFacultad;
                    }
                    if (empty($telefono)) {
                        $telefono = $integridad->telefono;
                    }
                    $facultades->actualizar($codigo, $nombre, $direccion, $telefono);
                    $aux = 1;
                } else {
                    $aux = "La Facultad que desea actualizar no existe";
                }
                echo $aux;
            }
        }
    }

    public function crearproycurricularesAction() {

        $facultades = new Application_Model_DbTable_Facultades();
        $row = $facultades->getall()->toArray();
        $this->view->facultades = $row;
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $proycurriculares = new Application_Model_DbTable_Proycurriculares();

            if ($this->_request->getPost("aux") == "crear") {
//Recibir los valores
                $identificacion = $this->_request->getPost("identificacion");
                if ($proycurriculares->verificar($identificacion) == 1) {
                    $verificar = "El Proyecto Curricular ya existe";
                } else {
                    $facultad = $this->_request->getPost("facultad");
                    $carrera = $this->_request->getPost("nombre");
                    $sede = $facultades->getSede($facultad);
                    $proycurriculares->agregar($identificacion, $facultad, $sede, $carrera);
                    $verificar = 1;
                }
            } else {
                $codigo = $this->_request->getPost("codigo");
                $verificar = $proycurriculares->verificar($codigo);
            }

            echo $verificar;
        }
    }

    public function consultarproycurricularAction() {
// action body
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
//Recibir los valores
            $identificacion = $this->_request->getPost("identificacion");
            $carreras = new Application_Model_DbTable_Carreras();
            $facultades = new Application_Model_DbTable_Facultades();
            $query = $carreras->consultar($identificacion);
            $facultad = $facultades->consultar($query->idFacultad);
            $query->idFacultad = $facultad->NombreFacultad;

            $json = Zend_Json::encode($query);
            echo $json;
        }
    }

    public function consultarproycurricularesAction() {
        $proycurriculares = new Application_Model_DbTable_Proycurriculares();
        $this->view->consulta = $proycurriculares->consulta_general();
    }

    public function crearsedesAction() {
        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $sedes = new Application_Model_DbTable_Sedes();
            if ($this->_request->getPost("aux") == "crear") {
//Recibir los valores
                $identificacion = $this->_request->getPost("identificacion");
                if ($sedes->verificar($identificacion) == 1) {
                    $verificar = "La Sede ya existe";
                } else {
                    $sede = $this->_request->getPost("nombre");
                    $coordinador = $this->_request->getPost("nombrecoor");
                    $direccion = $this->_request->getPost("direccion");
                    $telefono = $this->_request->getPost("telefono");
                    $progapoyoalimen = new Application_Model_DbTable_Progapoyoalimen();
                    $programa = $progapoyoalimen->getcodigoprog();
                    $programa = $programa["codigoprograma"];

                    $sedes->agregar($identificacion, $programa, $sede, $coordinador, $direccion, $telefono);
                    $verificar = 1;
                }
            } else {
                $codigo = $this->_request->getPost("codigo");
                $verificar = $sedes->verificar($codigo);
            }
            echo $verificar;
        }
    }

    public function actualizarsedesAction() {
        $sedes = new Application_Model_DbTable_Sedes();
        $row = $sedes->getall()->toArray();
        $this->view->sedes = $row;

        if ($this->getRequest()->isXmlHttpRequest()) {
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            $sedes = new Application_Model_DbTable_Sedes();
//Recibir los valores
            $aux = $this->_request->getPost("aux");
            if ($aux == "consultar") {
                $sede = $this->_request->getPost("sede");
                if ($sedes->verificar($sede) == 1) {
                    $query = $sedes->consultar($sede);
                    $json = Zend_Json::encode($query);
                } else {
                    $json = 1;
                }
                echo $json;
            } else {
//Recibir los valores
                $codigo = $this->_request->getPost("codigo");
//var_dump($codigo);
                if ($sedes->verificar($codigo) == 1) {
                    $nombre = $this->_request->getPost("nombre");
                    $direccion = $this->_request->getPost("direccion");
                    $telefono = $this->_request->getPost("telefono");

                    $coordinador = $this->_request->getPost("coordinador");
                    $integridad = $sedes->consultar($codigo);
//var_dump($integridad);
                    if (empty($nombre)) {
                        $nombre = $integridad->nombre;
                    }
                    if (empty($direccion)) {
                        $direccion = $integridad->direccion;
                    }
                    if (empty($telefono)) {
                        $telefono = $integridad->telefono;
                    }
                    if (empty($coordinador)) {
                        $coordinador = $integridad->nombreCoordinadorBI;
                    }
                    $sedes->actualizar($codigo, $nombre, $direccion, $telefono, $coordinador);
                    $aux = 1;
                } else {
                    $aux = "La Sede que desea actualizar no existe";
                }
                echo $aux;
            }
        }
    }

    public function consultarsedesAction() {
        $sedes = new Application_Model_DbTable_Sedes();
        $this->view->consulta = $sedes->consulta_general();
    }

//FUNCIONES_________________________________________________________________
    public function fechaMysql($fecha) {
        $arr = preg_split('/\/|-/', $fecha);
        /* if (count($arr) != 3)
          {
          return $fecha;
          } else
          { */
        return "$arr[2]-$arr[1]-$arr[0]";
//}
    }

    public function generarClave($longitud) {
        $clave = "";
        for ($i = 0; $i < $longitud; $i++) {
            $clave = $clave . chr(mt_rand(48, 90));
        }
        return $clave;
    }

}

